﻿using System;
using System.ComponentModel.DataAnnotations;
using WalkingTec.Mvvm.Core;

namespace HengTong.Model.Db.Hr;

/// <summary>
/// 员工社保信息
/// </summary>
[Display(Name = "员工社保信息", Description = "员工社保参保信息", GroupName = "人力资源")]
public class SysPersonSocialSecurity : BasePoco
{
    [Display(Name = "员工ID", Description = "关联员工主键", GroupName = "基本信息")]
    public Guid? PersonId { get; set; }

    [Display(Name = "员工", Description = "关联的员工实体", GroupName = "基本信息")]
    public SysPerson Person { get; set; }

    [Display(Name = "社保方案ID", Description = "关联的社保方案ID", GroupName = "基本信息")]
    public Guid? SchemeId { get; set; }

    [Display(Name = "社保方案", Description = "关联的社保方案", GroupName = "基本信息")]
    public SysPersonSocialSecurityScheme Scheme { get; set; }

    [Display(Name = "社保编号", Description = "社保个人编号", GroupName = "参保信息")]
    [StringLength(64)]
    public string SocialSecurityNo { get; set; }

    [Display(Name = "公积金账号", Description = "公积金个人账号", GroupName = "参保信息")]
    [StringLength(64)]
    public string HousingFundAccount { get; set; }

    [Display(Name = "参保日期", Description = "首次参保日期", GroupName = "参保信息")]
    public DateTime? EnrollmentDate { get; set; }

    [Display(Name = "参保状态", Description = "当前参保状态", GroupName = "参保信息")]
    public SocialSecurityStatus? Status { get; set; } = SocialSecurityStatus.正常缴纳;

    [Required]
    [Display(Name = "缴费年月", Description = "社保缴费年月(YYYY-MM)", GroupName = "缴费信息")]
    [StringLength(7)]
    public string PaymentMonth { get; set; }

    [Display(Name = "备注", Description = "备注说明", GroupName = "其他")]
    [StringLength(500)]
    public string Remark { get; set; }
}